<template>
  <div class="contarner-page" @click.stop="showLanguageHandel">
    <page-header ref="languageRef"></page-header>
    <main>
      <div class="downloader flex_ccenter" v-if="!success">
        <div class="container">
          <div class="hero-widgets flex_between c-fff">
            <div class="tool-item shou flex_center" @click="changeTab(0)">
              <img src="/static/images/video.svg" alt="savinginsta video" />
              <span class="f-16">Video</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(1)">
              <img src="/static/images/Photo.svg" alt="savinginsta photo" />
              <span class="f-16">Photo</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(2)">
              <img src="/static/images/Reels.svg" alt="savinginsta reels" />
              <span class="f-16">Reels</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(3)">
              <img src="/static/images/Story.svg" alt="savinginsta story" />
              <span class="f-16">Story</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(4)">
              <img src="/static/images/Igtv.svg" alt="savinginsta IGTV" />
              <span class="f-16">IGTV</span>
            </div>
          </div>
          <div class="banner-heading flex_ccenter">
            <div class="heading-item" v-show="current == 0">
              <h1 class="title fw700 f-42 c-fff">Instagram Video ke stažení</h1>
              <h2 class="sub c-fff f-18 fw400">
                Stáhněte si Instagramová videa, fotografie, kotouče, příběhy a
                IGTV Obsah online
              </h2>
            </div>
            <div class="heading-item" v-show="current == 1">
              <nuxt-link to="/cs/instagram-photo-download">
                <div @click="goToTop('Photo')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Instagram Photo Downloader
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Níže zadejte adresu URL Instagram FOTOGRAFIE
              </p>
            </div>
            <div class="heading-item" v-show="current == 2">
              <nuxt-link to="/cs/instagram-reels-video-download">
                <div @click="goToTop('reels')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Stáhněte si Instagram Reels
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Níže zadejte adresu URL Instagram Reels
              </p>
            </div>
            <div class="heading-item" v-show="current == 3">
              <nuxt-link to="/cs/instagram-story-download">
                <div @click="goToTop('story')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Instagram Story ke stažení
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Níže zadejte adresu URL Instagram Stories
              </p>
            </div>
            <div class="heading-item" v-show="current == 4">
              <nuxt-link to="/cs/igtv-downloader">
                <div @click="goToTop('igtv')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Stáhněte si video IGTV
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Níže zadejte adresu URL Instagram IGTV
              </p>
            </div>
          </div>
          <div class="form flex_center">
            <div class="input-box flex_between">
              <!-- <input
                type="text"
                class="input f-18"
                v-model="input"
                @input="handleInput"
                @paste="handleInput"
                placeholder="Paste URL Instagram"
                list="fruits"
                name="fruit"
              />
              <datalist id="fruits">
                <option value="Apple"></option>
                <option value="Banana"></option>
                <option value="Cherry"></option>
              </datalist> -->
              <input
                type="text"
                class="input f-18"
                v-model="input"
                :disabled="isHttpLoading"
                @input="handleInput"
                @paste="handleInput"
                @keydown="sendDownload($event)"
                placeholder="Paste URL Instagram"
              />
              <div
                class="Paste shou flex_center"
                @click="handleClickPasted"
                v-if="input == ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Paste</div>
              </div>
              <div
                class="clear shou flex_center"
                v-if="input != '' && !isHttpLoading"
                @click.stop="input = ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Clear</div>
              </div>
            </div>
            <div
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
              class="submit shou fw700 c-fff flex_center"
            >
              Download
            </div>
            <div v-else class="submit shou fw700 c-fff flex_center">
              Please wait
            </div>
          </div>
          <div class="app-submit flex_ccenter">
            <div
              class="submit flex_center"
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
            >
              <div class="fw700 c-fff f-21">Download</div>
            </div>
            <div class="submit flex_center" v-else>
              <div class="fw700 c-fff f-21">Please wait</div>
            </div>
          </div>
          <div class="loading" v-if="isHttpLoading">
            <div class="loading-dots flex_center">
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
            </div>
            <div class="tips f-18 flex_center">
              <div>Načítání dat, počkejte prosím několik sekund!</div>
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError1">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Web nemůže zpracovat váš odkaz, protože je soukromý
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError2">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Údaje, které jste zadali, nejsou odkazem. Zadejte prosím platný
              odkaz pro příklad:
              <div>https://www.instagram.com/reel/Cml9qu-ISqx</div>
            </div>
          </div>
        </div>
      </div>
      <!-- 广告位start -->
      <!-- 广告位end -->
      <div class="container" v-if="!success">
        <div class="body-content">
          <div class="title-box">
            <h3 class="title f-36 c-000 italic">
              Všechny funkce Savinginsta.Com
            </h3>
            <p class="sub f-16 c-ccc">
              Savinginsta je kompatibilní se všemi druhy videí na Instagramu a
              odkazy na obrázky.
            </p>
          </div>
          <div class="list-tools-pc">
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/cs">
                  <div @click="goToTop('video')" class="tItem">
                    <h4>Instagram pro stahování videa</h4>
                  </div>
                </nuxt-link>
                <p>
                  Savinginsta je navržen tak, aby vám umožnil stáhnout si
                  vlastní obsah z Instagramu. Nabízí podporu pro stahování obou
                  jednotlivá a více videí z Insta.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  src="/static/images/instagram-video-downloader.webp"
                  alt="Instagram video downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  src="/static/images/instagram-video-downloader-app.webp"
                  alt="Instagram video downloader"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/cs/instagram-photo-download">
                  <div @click="goToTop('Photo')" class="tItem">
                    <h4>Instagram pro stahování fotografií</h4>
                  </div>
                </nuxt-link>
                <p>
                  Instagram Photo Downloader společnosti Savinginsta to
                  usnadňuje uložit jednu nebo více fotografií, včetně koláží, z
                  Instagramu. Pomocí tohoto nástroje stahování jednotlivých
                  příspěvků obrázky nebo sbírka fotografií na Instagramu je
                  jednoduchá a přímočarý.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader.webp"
                  alt="Instagram photo downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader-app.webp"
                  alt="Instagram photo downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/cs/instagram-reels-video-download">
                  <div @click="goToTop('reels')" class="tItem">
                    <h4>Stáhněte si Instagram Reels</h4>
                  </div>
                </nuxt-link>
                <p>
                  Umožňuje vám to Instagram Reels Downloader společnosti
                  Savinginsta bez námahy stahujte videa Reels z příspěvků na
                  Instagramu vaše zařízení, poskytuje jednoduché řešení, kde
                  Instagram sám o sobě tuto funkci nepodporuje.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels.webp"
                  alt="Download Instagram Reels"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels-app.webp"
                  alt="Download Instagram Reels"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/cs/igtv-downloader">
                  <div @click="goToTop('igtv')" class="tItem">
                    <h4>IGTV downloader</h4>
                  </div>
                </nuxt-link>
                <p>
                  Příběhy Instagramu nabízejí uživatelům jedinečnou platformu
                  sdílet své každodenní zážitky prostřednictvím fotografií a
                  videí s a široké publikum. Občas si můžete uložit oblíbenou
                  položku příběh, ale tato funkce není v aplikaci dostupná.
                  Savinginsta řeší tento problém tím, že poskytuje řešení, které
                  umožňuje uživatelům snadno stahovat a prohlížet příběhy
                  Instagramu offline, což zajišťuje, že se nezapomenutelný obsah
                  nikdy neztratí.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader.webp"
                  alt="IGTV downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader-app.webp"
                  alt="IGTV downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/cs/instagram-story-download">
                  <div @click="goToTop('story')" class="tItem">
                    <h4>Prohlížeč příběhů na Instagramu</h4>
                  </div>
                </nuxt-link>
                <p>
                  IGTV nabízí prodloužená videa, a pokud nemůžete si je okamžitě
                  prohlédnout, máte možnost si je stáhnout IGTV videa do vašeho
                  PC. To vám umožní pohodlně znovu a užijte si je později,
                  dokonce i bez internetu připojení a eliminuje obavy o obsah
                  IGTV jsou odstraněny nebo nedostupné.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download.webp"
                  alt="Instagram Story Download"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download-app.webp"
                  alt="Instagram Story Download"
                />
              </div>
            </div>
          </div>
          <div class="app-box">
            <div class="app-box__info">
              <h3 class="app-box__title f-21 fw700 c-000">
                Stahujte pomocí aplikace Insta Downloader
              </h3>
              <p class="f-16 c-ccc">
                Naše aplikace nabízí rychlé a jednoduché řešení pro stahování
                Instagramová videa poskytující videa v HD kvalitě bez vodoznaky.
              </p>
            </div>
            <div class="app-link">
              <a 
                  target="_blank" href="https://play.google.com/store/apps/details?id=ins.freevideodownload.pro">
                <img src="/static/images/google-play.webp" alt="Download app " />
              </a>
              <a href="https://apps.apple.com/us/app/repost-for-video-save-story/id6462401460"  target="_blank">
                <img src="/static/images/IOS.webp" alt="Download app " />
              </a>
            </div>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              SAVINGINSTA - NEJLEPŠÍ NÁSTROJ KE STAŽENÍ INSTAGRAMU
            </h3>
            <p class="f-16 c-ccc">
              Savinginsta vyniká jako špičkový stahovač Instagramu, odborně
              vytvořený pro rychlé stahování vysoce kvalitního obsahu Instagram.
              Při hledání nejúčinnějšího způsobu stahování Media Instagram,
              Savinginsta downloader se ukazuje jako vedoucí řešení třetí
              strany.
            </p>
            <p class="f-16 c-ccc">
              Instagram, známý jako světově nejoblíbenější aplikace pro sdílení
              fotografií, svědky nahrávání milionů fotografií denně. Pro takové
              V okamžicích se stává nutností stahování videí z Instagramu
              zřejmé, poskytující bezproblémové řešení pro vaše okamžité
              potřeby. Tento nástroj je nezbytný pro každého, kdo si chce
              uchovat své oblíbený obsah Instagramu efektivně.
            </p>
          </div>
          <div class="features c-fff">
            <h3 class="h3 fw700 f-21">
              Funkce Savinginsta Instagram Video Downloader:
            </h3>
            <div class="attributes-list flex_between">
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Instagram video Stáhnout Rychlé, snadné a bezpečné.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Můžete se odhlásit ze svého instagramového účtu.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Pouhým kliknutím na tlačítko si můžete stáhnout obrázky z
                  Instagramu a videa.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Stahujte a ukládejte obrázky a videa v původní výši definice a
                  kvalita.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Z osobních účtů stahujte a ukládejte videa Instagramu.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Vysoká rychlost: V současné době Savinginsta nabízí
                  nejrychlejší rychlosti stahování.
                </div>
              </div>
            </div>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                Jak používat Savinginsta Instagram Downloader k ukládání z IG
              </h3>
              <div class="note c-ccc f-16">
                Poznámka: Ujistěte se, že video nebo fotografie Instagramu,
                které chcete stahování je z veřejného účtu.
              </div>
            </div>
            <div class="steps">
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Krok 01:</span>
                  <span class="f-16 c-000"
                    >Zkopírujte adresu URL fotografií a videí Instagramu</span
                  >
                </div>
                <div class="app-step">
                  <div class="fw700 c-000 f-16">V aplikaci Instagram:</div>
                  <div class="c-000 f-16">
                    Pro iOS: Klepnutím získáte adresu URL fotografie Instagramu.
                  </div>
                  <div class="c-000 f-16">
                    Pro Android: Klikněte nad příspěvkem a vyberte „Kopírovat
                    Instagram URL“ a poté klikněte na „Kopírovat adresu URL
                    sdílení“. Odkaz bude zkopírován do vaší schránky.
                  </div>
                  <div class="fw700 c-000 f-16">- Na PC/Mac:</div>
                  <div class="c-000 f-16">
                    Klikněte pravým tlačítkem myši na datum videa nebo
                    fotografie Instagramu a vyberte "Kopírovat adresu odkazu"
                    pro stažení obsahu Instagramu vaší pracovní ploše.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Krok 02:</span>
                  <span class="f-16 c-000">
                    Vložte adresu URL do Savinginsta.App</span
                  >
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Přejděte na Savinginsta.App – vyhrazený Instagram stahovač.
                  </div>
                  <div class="c-000 f-16">
                    Zkopírujte a vložte zkopírovanou adresu URL do daného
                    textového pole.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Krok 03:</span>
                  <span class="f-16 c-000">Spusťte stahování</span>
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Kliknutím na tlačítko "Stáhnout" spustíte Instagram video
                    nebo proces stahování fotografií.
                  </div>
                  <div class="fw700 c-000 f-16">
                    Důležité informace o použití
                  </div>
                  <div class="c-000 f-16">
                    Savinginsta je určen především pro stahování videí a obrázky
                    z vašeho vlastního instagramového účtu.
                  </div>
                  <div class="c-000 f-16">
                    Upřednostňujeme soukromí uživatelů a vyhrazujeme si právo
                    odmítnout služby, pokud jsou naše nástroje používány k
                    porušování práv ostatních soukromí nebo přístup k
                    neoprávněnému materiálu.
                  </div>
                </div>
              </div>
            </div>
            <div class="user-note f-16">
              <div class="app-tip"></div>
              Pro komplexní pochopení našich zásad

              <a class="fw700 c-blue" href="/terms-of-service">
                přečtěte si prosím naše úplné podmínky služby zde.</a
              >
            </div>
          </div>
          <div class="faq-section">
            <h3 class="faq-title f-36 c-000 italic">FAQ</h3>
            <div class="accordion">
              <div
                id="faq"
                itemscope="itemscope"
                itemtype="https://schema.org/FAQPage"
              >
                <div
                  itemprop="mainEntity"
                  itemscope="itemscope"
                  itemtype="https://schema.org/Question"
                  class="accordion-item"
                  :key="k"
                  v-for="(item, k) in faqList"
                >
                  <h4 itemprop="name" class="accordion-title fw700 f-16">
                    {{ item.title }}
                  </h4>
                  <div
                    itemprop="acceptedAnswer"
                    itemscope=""
                    itemtype="https://schema.org/Answer"
                  >
                    <div
                      itemprop="text"
                      class="accordion-text f-16 c-ccc fw400"
                    >
                      {{ item.content }}
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- 解析结果 start -->
      <div class="container" v-if="success">
        <success-content
          @refresh="refresh"
          :list="successList"
        ></success-content>
      </div>
      <!-- 解析结果 end -->
    </main>
    <footer>
      <div class="container">
        <div class="footer-content">
          <div class="footer-link">
            <div class="row flex_between">
              <div class="col-12">
                <div class="link-label fw700 c-000 f-21">Nástroje</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li @click="goToTools('story')">
                    <nuxt-link to="/cs/instagram-story-download"
                      >Instagram Story Downloader</nuxt-link
                    >
                  </li>
                  <li @click="goToTools('reels')">
                    <nuxt-link to="/cs/instagram-reels-video-download"
                      >Instagram Reels Downloader</nuxt-link
                    >
                  </li>
                  <li>
                    <a href="https://savingtik.com/" target="_blank"
                      >Tiktok Downloader</a
                    >
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Podpěra</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/contact"> Kontakt </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/blog"> Blog </nuxt-link>
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Právní</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/terms-of-service">
                      Podmínky služby
                    </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/privacy-policy"
                      >Zásady ochrany osobních údajů
                    </nuxt-link>
                  </li>
                </ul>
              </div>
            </div>
          </div>
          <div class="copyright flex_ccenter">
            <b class="fw700 f-21 c-000"
              >Nejsme spojeni s Instagramem nebo Meta</b
            >
            <div class="c-ccc f-16">
              © {{new Date().getFullYear()}} Insta Downloader All rights reserved.
            </div>
          </div>
        </div>
      </div>
    </footer>
  </div>
</template>

<script>
import { mapState, mapGetters, mapMutations } from "vuex";
import pageHeader from "~/components/page-header.vue";
import SuccessContent from "~/components/success-content.vue";
import CryptoJS from "crypto-js";
import { handleClick, checkString } from "@/plugins/Firebase.js";

export default {
  components: { pageHeader, SuccessContent },
  name: "IndexPage",
  head: {
    htmlAttrs: {
      lang: "cs",
    },
    bodyAttrs: {
      "data-lang": "cs",
    },
    title:
      "Instagram Downloader - Stáhněte si Instagram Video online - Savinginsta",
    meta: [
      { property: "og:locale", content: "cs" },
      //Page Information
      {
        name: "description",
        content:
          "Savinginsta: Snadno stahujte Instagramová videa, kotouče a fotografie pomocí našeho uživatelsky přívětivého nástroje. Ukládejte svá Instagramová videa rychle a bezpečně na libovolném zařízení.",
      },
      //Schema.org Microdata
      {
        itemprop: "name",
        content:
          "Instagram Downloader - Stáhněte si Instagram Video online - Savinginsta",
      },

      // Facebook / OpenGraph
      {
        property: "og:title",
        content:
          "Instagram Downloader - Stáhněte si Instagram Video online - Savinginsta",
      },
      { property: "og:type", content: "website" },
      { property: "og:url", content: "https://savinginsta.com/cs" },

      {
        property: "og:description",
        content:
          "Savinginsta: Snadno stahujte Instagramová videa, kotouče a fotografie pomocí našeho uživatelsky přívětivého nástroje. Ukládejte svá Instagramová videa rychle a bezpečně na libovolném zařízení.",
      },
      //Twitter
      { name: "twitter:card", content: "summary" },
      { name: "twitter:url", content: "https://savinginsta.com/cs" },
      {
        name: "twitter:title",
        content:
          "Instagram Downloader - Stáhněte si Instagram Video online - Savinginsta",
      },
      {
        name: "twitter:description",
        content:
          "Savinginsta: Snadno stahujte Instagramová videa, kotouče a fotografie pomocí našeho uživatelsky přívětivého nástroje. Ukládejte svá Instagramová videa rychle a bezpečně na libovolném zařízení.",
      },
      //multilingual
      {
        name: "google",
        content: "notranslate",
      },
      {
        itemprop: "image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        property: "og:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        name: "twitter:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
    ],
    link: [
      //multilingual
      {
        rel: "alternate",
        hreflang: "x-default",
        href: "https://savinginsta.com/cs",
      },
      {
        rel: "alternate",
        hreflang: "en",
        href: "https://savinginsta.com/",
      },
      {
        rel: "alternate",
        hreflang: "en-in",
        href: "https://savinginsta.com/in",
      },
      {
        rel: "alternate",
        hreflang: "vi",
        href: "https://savinginsta.com/vn",
      },
      {
        rel: "alternate",
        hreflang: "tr",
        href: "https://savinginsta.com/tr",
      },
      {
        rel: "alternate",
        hreflang: "id",
        href: "https://savinginsta.com/id",
      },
      {
        rel: "alternate",
        hreflang: "fr",
        href: "https://savinginsta.com/fr",
      },
      {
        rel: "alternate",
        hreflang: "pt",
        href: "https://savinginsta.com/pt",
      },
      {
        rel: "alternate",
        hreflang: "ru",
        href: "https://savinginsta.com/ru",
      },
      {
        rel: "alternate",
        hreflang: "es",
        href: "https://savinginsta.com/es",
      },
      {
        rel: "alternate",
        hreflang: "ms",
        href: "https://savinginsta.com/ms",
      },
      {
        rel: "alternate",
        hreflang: "ko",
        href: "https://savinginsta.com/ko",
      },
      {
        rel: "alternate",
        hreflang: "ja",
        href: "https://savinginsta.com/ja",
      },
      {
        rel: "alternate",
        hreflang: "jv",
        href: "https://savinginsta.com/jv",
      },
      {
        rel: "alternate",
        hreflang: "cs",
        href: "https://savinginsta.com/cs",
      },
      {
        rel: "alternate",
        hreflang: "de",
        href: "https://savinginsta.com/de",
      },
      {
        rel: "alternate",
        hreflang: "it",
        href: "https://savinginsta.com/it",
      },
      {
        rel: "alternate",
        hreflang: "pl",
        href: "https://savinginsta.com/pl",
      },
      {
        rel: "alternate",
        hreflang: "hu",
        href: "https://savinginsta.com/hu",
      },
      {
        rel: "alternate",
        hreflang: "nl",
        href: "https://savinginsta.com/nl",
      },
      {
        rel: "alternate",
        hreflang: "ro",
        href: "https://savinginsta.com/ro",
      },
      {
        rel: "alternate",
        hreflang: "el",
        href: "https://savinginsta.com/el",
      },
      {
        rel: "canonical",
        href: "https://savinginsta.com/cs",
      },
    ],
    script: [
      {
        json: {
          "@context": "https://schema.org",
          "@type": "WebSite",
          name: "Instagram Downloader - Stáhněte si Instagram Video online - Savinginsta",
          url: "https://savinginsta.com",
          description:
            "Savinginsta: Snadno stahujte Instagramová videa, kotouče a fotografie pomocí našeho uživatelsky přívětivého nástroje. Ukládejte svá Instagramová videa rychle a bezpečně na libovolném zařízení.",
          publisher: {
            "@type": "Organization",
            name: "Savinginsta",
            logo: {
              "@type": "ImageObject",
              url: "https://savinginsta.com/static/images/logo.webp",
            },
          },
        },
        type: "application/ld+json",
      },
    ],
  },
  data() {
    return {
      input: "",
      success: false,
      isHttpLoading: false,
      httpError1: false,
      httpError2: false,
      current: 0,
      successList: [],
      faqList: [
        {
          title: `Co je Instagram Video Downloader?`,
          content: `Instagram Video Downloader je webový nástroj určený k ukládání fotografií, videí a obsahu IGTV na Instagramu pro pozdější použití. Savinginsta vyniká jako nejlepší volba pro snadné stahování obsahu z Instagramu.`,
        },
        {
          title: `Je pro používání Savinginsta nutné přihlášení do mého účtu Instagram?`,
          content: `Ne, nemusíte se přihlašovat ke svému účtu Instagram. Savinginsta zajišťuje bezpečné a anonymní stahování z Instagramu bez nutnosti jakýchkoli osobních údajů.`,
        },
        {
          title: `Mohu přímo ukládat videa z Instagramu?`,
          content: `Přímé stahování videí z vašeho kanálu Instagram nebo příběhů ostatních není možné prostřednictvím samotného Instagramu. Savinginsta však nabízí jednoduché řešení. Stačí navštívit jejich webovou stránku https://savinginsta.com a postupovat podle poskytnutých přímých pokynů.`,
        },
        {
          title: `Je služba stahování videí a fotografií z Instagramu zdarma?`,
          content: `Ano, Savinginsta poskytuje tuto službu zcela zdarma, bez omezení počtu stažení.`,
        },
        {
          title: `Mohu si stáhnout obsah ze soukromých účtů Instagramu?`,
          content: `Savinginsta vám skutečně umožňuje stahovat videa, příběhy a fotografie ze soukromých účtů Instagramu. Podrobné pokyny jsou k dispozici na jejich platformě.`,
        },
        {
          title: `Je možné uložit příběhy Instagramu?`,
          content: `Absolutně. S Savinginsta si můžete prohlížet a stahovat jakýkoli příběh Instagramu. Jednoduše klikněte na tři tečky (⁝) v příběhu, zkopírujte odkaz a vložte jej do Savinginsta pro zahájení stahování.`,
        },
        {
          title: `Podporuje Savinginsta stahování na počítačích?`,
          content: `Ano, Savinginsta je plně kompatibilní s PC a umožňuje vám stahovat Instagramová videa, fotografie, příběhy a další přímo do vašeho počítače.`,
        },
        {
          title: `Mohu použít Savinginsta ke stažení z Instagramu na zařízeních Android?`,
          content: `Rozhodně. Pro uživatele Androidu jednoduše zkopírujte odkaz na příspěvek na Instagramu, vložte jej do Savinginsta a uložte. Další podrobnosti najdete v jejich průvodci stahováním z Instagramu pro Android.`,
        },
        {
          title: `Jak si mohu stáhnout Instagramová videa a fotografie na iPhone/iPad (iOS)?`,
          content: `Savinginsta vytvořil uživatelsky přívětivého průvodce krok za krokem pro stahování různých typů videí do vašeho iPhonu nebo iPadu. Pokyny naleznete na tomto odkazu: Stáhněte si Instagramová videa na iPhone.`,
        },
        {
          title: `Co když se místo stahování přehraje video z Instagramu?`,
          content: `Chcete-li tento problém vyřešit, klikněte pravým tlačítkem myši na video a vyberte možnost „Uložit jako...“ a vyberte požadované místo uložení, nikoli klepnutí levým tlačítkem.`,
        },
        {
          title: `Kde jsou videa uložena po stažení?`,
          content: `Stažená videa jsou obvykle uložena ve složce „Stažené soubory“ na mobilních zařízeních Android i na počítačích.`,
        },
      ],
    };
  },
  computed: {
    ...mapGetters(["language"]),
  },
  mounted() {
    this.debouncedDownInput = this.debounce(this.downInput, 1000);

    //到达首页
    handleClick("guide_homepage_frist", {});
    handleClick("guide_homepage", {});
  },
  methods: {
    async downloadHandel() {
      if (this.isHttpLoading || this.input === "") return;
      this.isHttpLoading = false;
      this.httpError1 = false;
      this.httpError2 = false;
      this.input = this.input.replace(/^.*\s?https:\/\//, "https://");
      const insUrlPattern = new RegExp("^http(s|)://.*instagram.com.*/.*$");
      let type = checkString(this.input);
      if (!insUrlPattern.test(this.input)) {
        //点击解析下载按钮
        handleClick("action_ins_detect_boinsom", {
          site: "other",
          noislink: this.input,
          from: "video",
          type: type,
        });
        this.httpError2 = true;
        this.isHttpLoading = false;
        return;
      }
      //点击解析下载按钮
      handleClick("action_ins_detect_boinsom", {
        site: "other",
        from: "video",
        type: type,
      });
      //开始解析  ins_start_resolve
      handleClick("ins_start_resolve", {
        islink: this.input,
        from: "video",
        type: type,
      });
      this.isHttpLoading = true;
      try {
        let result = this.uki(this.input);
        const response = await fetch(
          "https://savinginsta.com/api/downloader/analysis",
          {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({
              path: result,
            }),
          }
        );
        let encryptedResponse = await response.text();
        let parse = JSON.parse(encryptedResponse);
        if (parse.code != 200) {
          // 解析失败  ins_resolve_fail
          handleClick("ins_resolve_fail", {
            reason: "Failed to fetch",
            islink: this.input,
            from: "video",
            type: type,
          });
          this.httpError1 = true;
          this.isHttpLoading = false;
          return;
        } else {
          //解析成功  ins_resolve_success
          handleClick("ins_resolve_success", {
            type: type,
            from: "video",
          });
          let decryptedResponse = await this.eki(parse.data); // 使用你的解密函数
          this.successList = JSON.parse(decryptedResponse);
          this.success = true;
          this.isHttpLoading = false;
        }
      } catch (error) {
        // 解析失败  ins_resolve_fail
        handleClick("ins_resolve_fail", {
          reason: "Failed to fetch",
          islink: this.input,
          from: "video",
          type: type,
        });
        console.error(error);
        this.httpError1 = true;
        this.isHttpLoading = false;
      }
    },

    uki(input) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      
  try {
        const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
        const keyBytes = CryptoJS.enc.Utf8.parse(complexKey);
        const inputBytes = CryptoJS.enc.Utf8.parse(input);
        const ivBytes = CryptoJS.lib.WordArray.random(IV_SIZE);
        const encrypted = CryptoJS.DES.encrypt(inputBytes, keyBytes, {
          iv: ivBytes,
          mode: CryptoJS.mode.CBC,
          padding: CryptoJS.pad.Pkcs7,
        });
        const ciphertext = ivBytes.concat(encrypted.ciphertext);
        return ciphertext.toString();
      } catch (error) {
        console.error(error);
        return null;
      }
    },
    eki(cipherText) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
      try {
        let keyBytes = CryptoJS.enc.Utf8.parse(
          complexKey.padEnd(CIPHER_ALGORITHM === "DES-CBC" ? 8 : 16)
        );
        let ivBytes = { iv: CryptoJS.enc.Hex.parse(process.env.DES_IV) }; // 如果使用CBC模式，需要一个初始化向量iv，这里是空向量
        let decrypted = CryptoJS.DES.decrypt(
          { ciphertext: CryptoJS.enc.Hex.parse(cipherText) },
          keyBytes,
          ivBytes
        );
        return decrypted.toString(CryptoJS.enc.Utf8);
      } catch (e) {
        console.error(e);
        return null;
      }
    },
    sendDownload(event) {
      if (event.keyCode === 13 && !this.isHttpLoading) {
        this.downloadHandel();
        event.preventDefault();
        return false;
      }
    },
    changeTab(k) {
      this.current = k;
    },
    handleInput(e) {
      this.debouncedDownInput(e);
    },
    debounce(fn, delay) {
      let timer;
      return function () {
        let context = this;
        let args = arguments;
        clearTimeout(timer);
        timer = setTimeout(() => {
          fn.apply(context, args);
        }, delay);
      };
    },

    downInput(e) {
      let type = checkString(e.target.value);
      // 粘贴链接到输入框 action_ins_paste
      handleClick("action_ins_paste", {
        islink: e.target.value,
        from: "photo",
        type: type,
      });
    },
    handleClickPasted() {
      if (!navigator.clipboard) {
        console.log("Clipboard API not available");
        return;
      }
      navigator.clipboard
        .readText()
        .then((text) => {
          this.input = text;
          let type = checkString(text);
          // 粘贴链接到输入框 action_ins_paste
          handleClick("action_ins_paste", {
            islink: text,
            from: "photo",
            type: type,
          });
        })
        .catch((err) => {
          console.error("Failed to read clipboard contents: ", err);
        });
    },
    showLanguageHandel() {
      this.$refs.languageRef.close();
    },
    refresh() {
      this.success = false;
      this.input = "";
      this.successList = [];
    },
    goToTop(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: top,
      });
    },
    goToTools(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: tools,
      });
    },
  },
};
</script>
<style lang="scss" scoped>
@import "@/static/style/index.css";
.loading {
  .loading-dots {
    position: relative;
    z-index: 999;
    margin-top: 70px;
  }

  .dot {
    background-color: #ffffff;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    margin: 0 10px;
    animation: loading-animation 1.5s infinite;
  }

  .dot:nth-child(2) {
    animation-delay: 0.5s;
  }

  .dot:nth-child(3) {
    animation-delay: 0.8s;
  }
  .dot:nth-child(4) {
    animation-delay: 1s;
  }
}
@keyframes loading-animation {
  0%,
  50%,
  80%,
  100% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.5);
  }
}
@media (max-width: 768px) {
  .loading {
    .loading-dots {
      margin-top: 26px !important;
    }
    .dot {
      width: 8px !important;
      height: 8px !important;
    }
  }
}
</style>
